﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using WebChatApi.Common.Interface;

namespace WebChatApi.Common
{
    /// <summary>
    /// Applciation period log
    /// </summary>
    [DataContract]
    [KnownType(typeof(BaseObject))]
    public class ApplciationPeriodLog : BaseObject
    {

        #region Properties

        /// <summary>
        /// Gets or sets the user key.
        /// </summary>
        /// <value>
        /// The user key.
        /// </value>
        [DataMember]
        public Guid UserKey
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the application source.
        /// </summary>
        /// <value>
        /// The application source.
        /// </value>
        public ApplicationSource ApplicationSource { get; set; }

        /// <summary>
        /// Gets or sets the device id.
        /// </summary>
        /// <value>
        /// The device id.
        /// </value>
        [DataMember]
        public string DeviceId
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the ip address.
        /// </summary>
        /// <value>
        /// The ip address.
        /// </value>
        [DataMember]
        public string IpAddress
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the agent.
        /// </summary>
        /// <value>
        /// The agent.
        /// </value>
        [DataMember]
        public string Agent
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the service version.
        /// </summary>
        /// <value>
        /// The service version.
        /// </value>
        [DataMember]
        public string ServiceVersion
        {
            get;
            set;
        }

        /// <summary>
        /// Gets or sets the client version.
        /// </summary>
        /// <value>
        /// The client version.
        /// </value>
        [DataMember]
        public string ClientVersion
        {
            get;
            set;
        }


        /// <summary>
        /// Gets or sets the start UTC time.
        /// </summary>
        /// <value>
        /// The start UTC time.
        /// </value>
        [DataMember]
        public DateTime StartUTCTime { get; set; }

        /// <summary>
        /// Gets or sets the end UTC time.
        /// </summary>
        /// <value>
        /// The end UTC time.
        /// </value>
        [DataMember]
        public DateTime EndUTCTime { get; set; }


        #endregion

        /// <summary>
        /// Initializes a new instance of the <see cref="ApplciationPeriodLog"/> class.
        /// </summary>
        public ApplciationPeriodLog()
            : base()
        {

        }
    }
}
